package org.soderiakelvy.controller.sujeto;

import java.io.Serializable;
import java.util.ArrayList;

import java.util.Date;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.event.FlowEvent;
import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.controller.util.Util;
import org.soderiakelvy.model.domain.ComercializacionMesVencidoVO;
import org.soderiakelvy.model.domain.ComercializacionPackVO;
import org.soderiakelvy.model.domain.ContribucionVO;
import org.soderiakelvy.model.domain.DesProdTipoCliVO;
import org.soderiakelvy.model.domain.FrioCalorVO;
import org.soderiakelvy.model.domain.PackVO;
import org.soderiakelvy.model.domain.ProductoVO;
import org.soderiakelvy.model.domain.RepartoVO;
import org.soderiakelvy.model.domain.SucursalFrioCalorVO;
import org.soderiakelvy.model.domain.SucursalProductoVO;
import org.soderiakelvy.model.domain.SucursalVO;
import org.soderiakelvy.model.domain.SujetoVO;
import org.soderiakelvy.model.domain.TipoClienteVO;
import org.soderiakelvy.model.domain.VisitaVO;
import org.soderiakelvy.model.service.ProductoServicio;
import org.soderiakelvy.model.service.RepartoServicio;
import org.soderiakelvy.model.service.SucursalServicio;
import org.soderiakelvy.model.service.SujetoServicio;
import org.soderiakelvy.model.service.imp.ProductoServicioImp;
import org.soderiakelvy.model.service.imp.RepartoServicioImp;
import org.soderiakelvy.model.service.imp.SucursalServicioImp;
import org.soderiakelvy.model.service.imp.SujetoServicioImpl;
import org.soderiakelvy.model.util.ConstantModel;

@ManagedBean
@ViewScoped
public class SujetoEmpresaCreate implements Serializable{
	private static final long serialVersionUID = 1L;
	
	//--- SERVICES ---
	private SujetoServicio serviceSujeto;
	private SucursalServicio serviceSucursal;
	private ProductoServicio serviceProducto;	
	private RepartoServicio serviceReparto;
	
	//--- VO ---
	private SujetoVO sujeto;
	private ContribucionVO contribucion;
	private TipoClienteVO tipoCliente;		
	private SucursalVO sucursal;
	private VisitaVO visita;
	private RepartoVO reparto;
	private ComercializacionPackVO comercializacionPack;
	private PackVO pack;
	private ComercializacionMesVencidoVO mesVencido;
	private ComercializacionPackVO comPack;	
	
	//--- LIST ---
	private List<SucursalVO> sucursalesAsignadas = new ArrayList<SucursalVO>();		
	private List<SucursalProductoVO> productosAsignados = new ArrayList<SucursalProductoVO>();
	private List<DesProdTipoCliVO> productosDisponibles;
	private List<ProductoVO> productoAsignados = new ArrayList<ProductoVO>();
	private List<ComercializacionMesVencidoVO> productosMesVencido = new ArrayList<ComercializacionMesVencidoVO>();
	private DesProdTipoCliVO[] productosSeleccionados;
	private String[] diasSeleccionados;
	//------------
	
	
	//--- CONSTRUCTOR ---
	public SujetoEmpresaCreate(){
		instanciarServicios();
		iniciarVista();
	}
	
	private void instanciarServicios(){
		serviceSujeto 	= new SujetoServicioImpl();
		serviceSucursal	= new SucursalServicioImp();
		serviceProducto	= new ProductoServicioImp();	
		serviceReparto 	= new RepartoServicioImp();
	}
	private void iniciarVista(){
		sujeto 			= new SujetoVO();
		contribucion 	= new ContribucionVO();
		tipoCliente				= serviceSujeto.getDefaultValue();
		sucursal 				= new SucursalVO();
		sujeto 					= new SujetoVO();
		visita 					= new VisitaVO();
		reparto					= new RepartoVO();
		comercializacionPack	= new ComercializacionPackVO();
		pack					= new PackVO();
	}
	//-------------------

	
	public String onFlowProcess(FlowEvent event) {		
        return event.getNewStep();        
    } 
	
	//--- GET AND SET ---
	public SujetoVO getSujeto() {
		return sujeto;
	}

	public void setSujeto(SujetoVO sujeto) {
		this.sujeto = sujeto;
	}

	public ContribucionVO getContribucion() {
		return contribucion;
	}

	public void setContribucion(ContribucionVO contribucion) {
		this.contribucion = contribucion;
	}

	public TipoClienteVO getTipoCliente() {
		return tipoCliente;
	}

	public void setTipoCliente(TipoClienteVO tipoCliente) {
		this.tipoCliente = tipoCliente;
	}

	public SucursalVO getSucursal() {
		return sucursal;
	}

	public void setSucursal(SucursalVO sucursal) {
		this.sucursal = sucursal;
	}

	public VisitaVO getVisita() {
		return visita;
	}

	public void setVisita(VisitaVO visita) {
		this.visita = visita;
	}

	public RepartoVO getReparto() {
		return reparto;
	}

	public void setReparto(RepartoVO reparto) {
		this.reparto = reparto;
	}

	public ComercializacionPackVO getComercializacionPack() {
		return comercializacionPack;
	}

	public void setComercializacionPack(ComercializacionPackVO comercializacionPack) {
		this.comercializacionPack = comercializacionPack;
	}

	public PackVO getPack() {
		return pack;
	}

	public void setPack(PackVO pack) {
		this.pack = pack;
	}

	public ComercializacionMesVencidoVO getMesVencido() {
		return mesVencido;
	}

	public void setMesVencido(ComercializacionMesVencidoVO mesVencido) {
		this.mesVencido = mesVencido;
	}

	public ComercializacionPackVO getComPack() {
		return comPack;
	}

	public void setComPack(ComercializacionPackVO comPack) {
		this.comPack = comPack;
	}
	//-------------------
	
}
